package com.vanysoft.business.base.role.dao;

import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.vanysoft.business.base.role.entity.TBaseRole;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface BaseRoleMapper {
    int deleteByPrimaryKey(String roleCode);

    int insert(TBaseRole record);

    TBaseRole selectByPrimaryKey(String roleCode);

    List<TBaseRole> selectAll();

    int updateByPrimaryKey(TBaseRole record);

    List<TBaseRole> loadRole(@Param("owner") String owner, @Param("roleName") String roleName);

    /**
     * Function Name               loadRoleAll
     *
     * @param roleName
     * @return
     * @description administrator角色可查看所有角色
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年7月9日 下午2:53:47          SharpClaw_x                     Initial
     * *********************************************************************
     */
    List<TBaseRole> loadRoleAll(@Param("roleName") String roleName);

    List<Map<String, Object>> loadRoleUserInfo(Pagination pagination, @Param("roleCode") String roleCode, @Param("searchKey") String searchKey);

    int deleteRoleUser(@Param("roleCode") String roleCode, @Param("userId") String userId);

    int deleteRoleUserByroleCode(String roleCode);

    /**
     * Function Name               queryFunctionInfoByCodes
     *
     * @param functionCodeList
     * @return
     * @description 根据数据权限代码递归查询详细数据代码集合
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年5月27日 下午5:43:59          SharpClaw_x                     Initial
     * *********************************************************************
     */
    List<Map> queryRecursionDataByCodes(String orgCodeList);

    /**
     * Function Name               queryDataByCodesPart
     *
     * @param orgCodeList
     * @return
     * @description 根据数据代码集合查询数据权限范围信息, 显示部分字段
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年6月28日 下午6:40:12          SharpClaw_x                     Initial
     * *********************************************************************
     */
    List<Map<String, Object>> queryDataByCodesPart(String orgCodeList);


    /**
     * Function Name               modifyRoleDataScopeByRoleCode
     *
     * @param checkRoleCode
     * @param orgCodes
     * @description 根据角色代码, 数据权限字符串  分配与移除数据权限
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年6月7日 下午5:17:32          SharpClaw_x                     Initial
     * *********************************************************************
     */
    void modifyRoleDataScopeByRoleCode(Map<String, Object> paramsMap);

    /**
     * Function Name               queryRolesAll
     *
     * @param search
     * @param roleName
     * @return
     * @description 查询角色
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年6月30日 上午10:00:49           SharpClaw_x      Initial
     * *********************************************************************
     */

    List<TBaseRole> queryRolesAll(Pagination pagination, @Param("roleName") String roleName, @Param("status") String status);

    /**
     * Function Name               queryForbiddenRolesAll
     *
     * @param roleName
     * @return
     * @description 查询已禁用
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年6月27日 上午10:41:30           SharpClaw_x      Initial
     * *********************************************************************
     */
    int queryForbiddenRolesAll(@Param("roleName") String roleName);

    /**
     * Function Name               queryNotForbiddenRolesAll
     *
     * @param roleName
     * @return
     * @description 查询未禁用
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年6月27日 上午10:41:50           SharpClaw_x      Initial
     * *********************************************************************
     */
    int queryNotForbiddenRolesAll(@Param("roleName") String roleName);


    /**
     * Function Name               queryRoles
     *
     * @param search
     * @param roleName
     * @return
     * @description 查询角色
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年6月30日 上午10:00:49           SharpClaw_x      Initial
     * *********************************************************************
     */

    List<TBaseRole> queryRoles(Pagination pagination, @Param("owner") String owner, @Param("roleName") String roleName, @Param("status") String status);

    /**
     * Function Name               queryForbiddenRoles
     *
     * @param roleName
     * @return
     * @description 查询已禁用
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年6月27日 上午10:41:30           SharpClaw_x      Initial
     * *********************************************************************
     */
    int queryForbiddenRoles(@Param("owner") String owner, @Param("roleName") String roleName);

    /**
     * Function Name               queryNotForbiddenRoles
     *
     * @param roleName
     * @return
     * @description 查询未禁用
     * Modify History:              Date             Programmer       Notes
     * ---------        ---------------  ---------
     * 2017年6月27日 上午10:41:50           SharpClaw_x      Initial
     * *********************************************************************
     */
    int queryNotForbiddenRoles(@Param("owner") String owner, @Param("roleName") String roleName);
}